﻿名称：		BGI
描述：		Ethornell - Buriko General Interpreter系统(Darios Sawm 氏・株式会社BURIKO)
封包：		.arc .gdb
作者：		痴漢公賊 (glanser@163.com)
版本：		1.0.1
成熟度：	测试版

【.arc封包文件说明】
    实际类型是有目录的封包资源文件。
    元数据根据实际用途，是bmp、ogg、_bp（二进制脚本）等。
    
    	首部：
		s8 magic[12];	// "PackFile    "
		u32 entries;	//资源文件数（每项长度32字节）		
	索引段：
		s8 name[16];	// 资源文件名
		u32 offset;	// 资源文件数据偏移（从索引段算起）
		u32 length;	// 资源文件数据长度
		u32 reserved[2];
	数据：明文资源文件或经过dsc格式封装的资源文件
		紧接在索引段之后。

【dsc格式资源文件说明】
    图像资源以外的资源文件通常被编码为dsc格式：
	
    	首部：
		s8 magic[16];	// "DSC FORMAT 1.00"
		u32 key;	// 解密512字节depth用key
		u32 uncomprlen;	// 解压后的数据长度
		u32 dec_counts;	// 解压循环的次数
		u32 reserved;
	数据：	lz压缩＋哈夫曼编码
		u8 depth[512];	// 加密过的512字节哈夫曼树叶节点深度信息（即编码位长度，用于重建哈夫曼树）；
				// 其中code小于256的叶节点是lz压缩时直接输出的字节数据；
				// code大于等于256的叶节点是lz压缩时用于寻址window的copy_bytes长度（实际长度还要＋2）。
		接下来是哈夫曼编码的位数据。如果叶节点的code小于256，则输出数据就是code本身；如果code大于等于256，则位数据中的12位用于window索引，code - 256表示copy_bytes长度（实际长度还要＋2）。（典型的lz压缩算法）

【CompressedBG格式资源文件说明】
    只有图像资源文件使用该格式，无扩展名。
    元数据是bmp。

	首部：
		s8 magic[16];		// "CompressedBG___"
		u16 width;		// 图像宽度
		u16 height;		// 图像高度
		u32 color_depth;	// 图像色深
		u32 reserved0[2];
		u32 zero_comprlen;	// 哈夫曼解码后的0值字节压缩的数据长度
		u32 key;		// 解密叶节点权值段用key
		u32 encode_length;	// 加密了的叶节点权值段的长度
		u8 sum_check;		// 对解密后的叶节点权值段的累加校验值
		u8 xor_check;		// 对解密后的叶节点权值段的累异或校验值
		u16 reserved1;
	数据：哈夫曼编码数据
		紧接在首部之后，哈夫曼解码后得到的数据是0值字节压缩的数据（即使用类似RLE压缩算法对所有的0字节值压缩），解压后再进行均值defilting即可得到标准RGB数据。

【.gdb封包文件说明】
    实际类型是无目录的封包文件。
    保存BGI系统配置信息。	

    	首部：
		s8 magic[16];	// "SDC FORMAT 1.00"
		u32 key;	// 解密数据用key
		u32 comprlen;	// 数据长度（lz压缩）
		u32 uncomprlen;	// 解压后的数据长度
		u16 sum_check;	// 累加校验值
		u16 xor_check;	// 累异或校验值
	数据：
		紧接在首部之后，解密后是lz压缩数据。

【音频资源文件说明】
    实际类型是无目录的资源文件，无扩展名。
    元数据是ogg。

	首部：
		u32 header_length;	// 首部长度（64字节）
		u32 unknown0;		
		u32 length;		// ogg数据长度
		u32 unknown[13];
	数据：
		紧接在首部之后。

【图像资源文件说明】
    实际类型是无目录的资源文件，无扩展名，该格式存在于sysgrp.arc，graphic.arc封包中。
    元数据是bmp。

	首部：
		u16 width;		// 图像宽度
		u16 height;		// 图像高度
		u32 color_depth;	// 图像色深
		u32 reserved0[2];
	数据：
		紧接在首部之后。

	注意：因为该格式实在没有很好的标识符，因此如果封包的名称不是sysgrp.arc或graphic.arc，crage遇到这种数据时会输出很多无扩展名的数据。如果遇到这种情况，请将游戏名称、公司和arc封包的名称发送给我，以便今后支持这种封包。

【ChangeLog】
2008-06-18 08:33 ver 1.0.1 忽略对无有效数据负载的封包的提取
2007-04-23 11:53 ver 1.0.0 第一版发布
